package com.ruicar.afs.cloud.manage.common.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruicar.afs.cloud.common.core.entity.BaseEntity;
import com.ruicar.afs.cloud.common.modules.contract.enums.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author: Lee
 * @date 2020-05-30 09:21:16 
 * @description 提前结清报价单
 */
@Data
@Accessors(chain = true)
@TableName(value ="manage_prepayment_quotation", autoResultMap = true)
public class ManagePrepaymentQuotation extends BaseEntity<ManagePrepaymentQuotation> {
	/** 渠道id */
	@ApiModelProperty("渠道id")
	@JsonSerialize(using = ToStringSerializer.class)
	@JSONField(serializeUsing = com.alibaba.fastjson.serializer.ToStringSerializer.class)
	private Long channelId;
	@ApiModelProperty("申请编号")
	private String applyNo;

	/** 报价单编号 */
	@ApiModelProperty("报价单编号")
	private String quotationNo;
	/** 数据来源 枚举值：CMS、多品系统 */
	@ApiModelProperty("数据来源 枚举值：CMS、多品系统")
	private DataSourceEnum dataSource;
	/** 车辆编号 */
	@ApiModelProperty("车辆编号")
	private Integer carId;
	/** 合同编号 */
	@ApiModelProperty("合同编号")
	private String contractNo;
	/** 当前合同状态 记录提前结清申请时的合同状态 枚举值：  */
	@ApiModelProperty("当前合同状态 记录提前结清申请时的合同状态 枚举值： ")
	private ContractStatusEnum currentContractStatus;
	/** 结清标的 合同，车辆 */
	@ApiModelProperty("结清标的 合同，车辆")
	private PlanTypeEnum prepaymentTarget;
	/** 未偿本金 截止计算日期剩余本金（不包括逾期租金） */
	@ApiModelProperty("未偿本金 截止计算日期剩余本金（不包括逾期租金）")
	private BigDecimal unpayedCaptial;
	/** 逾期金额 */
	@ApiModelProperty("逾期金额")
	private BigDecimal overdueAmount;
	/** 利息应收 */
	@ApiModelProperty("利息应收")
	private BigDecimal interestReceivable;
	/** 未付逾期利息 */
	@ApiModelProperty("未付逾期利息")
	private BigDecimal unpayedOverdueInterest;
	/** 提前终止费用 */
	@ApiModelProperty("提前终止费用")
	private BigDecimal prepaymentCharge;
	/** 应计逾期利息 */
	@ApiModelProperty("应计逾期利息")
	private BigDecimal overdueInterestReceivable;
	/** 提前终止金额 */
	@ApiModelProperty("提前终止金额")
	private BigDecimal prepaymentCost;
	/** 杂费 */
	@ApiModelProperty("杂费")
	private BigDecimal otherCost;
	/** 未分配金额 */
	@ApiModelProperty("未分配金额")
	private BigDecimal unusedDeposit;
	/** 豁免单费用 */
	@ApiModelProperty("豁免单费用")
	private BigDecimal exemptBillCost;
	/** 豁免费用 */
	@ApiModelProperty("豁免费用")
	private BigDecimal exemptAmount = new BigDecimal(0);
	/** 豁免罚息 */
	@ApiModelProperty("豁免罚息")
	private BigDecimal exemptOverdueInterest = new BigDecimal(0);
	/** 应收净额 */
	@ApiModelProperty("应收净额")
	private BigDecimal receivableAmount;
	/** 计算时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("计算时间")
	private Date calculateTime;
	/** 执行计算时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("执行计算时间")
	private Date executeTime;
	/** 还款方式 对公结算，卡扣 */
	@ApiModelProperty("还款方式 对公结算，卡扣")
	private ReceiptSourceTypeEnum repayMode;
	/** 合同是否满6期 */
	@ApiModelProperty("合同是否满6期")
	private YesOrNoEnum isSixPeriod;
	/** 不满六期原因 */
	@ApiModelProperty("不满六期原因")
	private String shortSixPeriodReason;
	/** 是否采用 */
	@ApiModelProperty("是否采用")
	private YesOrNoEnum isUsed;
	/** 报价单状态 枚举值：有效、无效 */
	@ApiModelProperty("报价单状态 枚举值：有效、无效")
	private ValidOrInvalidEnum status;
	/** 备注 */
	@ApiModelProperty("备注")
	private String remarks;
	/** 客户姓名 */
	@ApiModelProperty("客户姓名")
	private String custName;
	/** 合同到期日期 */
	@ApiModelProperty("合同到期日期")
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date endDate;
	/** 合同激活时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("合同激活时间")
	private Date startDate;
	/** 业务类型 */
	@ApiModelProperty("业务类型")
	private BusinessTypeEnum businessType;
	/** 总期数 */
	@ApiModelProperty("总期数")
	private Integer loanTerm;
	/** 已还期数 */
	@ApiModelProperty("已还期数")
	private Integer alreadyPeriods = 0;
	/** 未还期数 */
	@ApiModelProperty("未还期数")
	private Integer noAlreadyPeriods;
	@ApiModelProperty("提前结清类型 客户主动结清，客户逾期结清")
	private PrepaymentTypeEnum prepaymentType;

}
